package util;

import vo.Camion;

public class Cola {

	private Nodo primero;
	private Nodo ultimo;
	private int cantidad;
	private static final int TOPE_COLA = 5;

	public boolean isEmpty() {
		return this.primero == null;
	}

	public int size() {
		return this.cantidad;
	}

	public void enqueue(Camion c) {
		Nodo n = new Nodo();
		n.setCamion(c);
		n.setSiguiente(null);
		if (isEmpty()) {
			primero = n;
			ultimo = n;
			cantidad++;
		} else {
			if (cantidad < TOPE_COLA) {
				ultimo.setSiguiente(n);
				ultimo = n;
				cantidad++;
			}
		}
	}

	public Camion peek() {
		return primero.getCamion();
	}

	public Camion dequeue(){
		if (isEmpty())
			throw new RuntimeException();
		Camion c = peek();
		primero = primero.getSiguiente();
		cantidad --;
		
		return c;
	}
	
	
	private class Nodo {
		private Camion camion;
		private Nodo siguiente;

		public Camion getCamion() {
			return camion;
		}

		public void setCamion(Camion camion) {
			this.camion = camion;
		}

		public Nodo getSiguiente() {
			return siguiente;
		}

		public void setSiguiente(Nodo siguiente) {
			this.siguiente = siguiente;
		}

	}
}
